<!DOCTYPE html>
<html>

<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>整数反转</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <style>
        .box {
            display: flex;
            padding: 5%;
        }

        .left-wrap {
            width: 40%;
        }

        pre {
            text-align: left;
            margin-left: -20%;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="left-wrap">

        </div>
    </div>
</body>
<script>
    /*
    给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。

        示例 1:

            输入: 123
            输出: 321
         示例 2:

            输入: -123
            输出: -321
        示例 3:

            输入: 120
            输出: 21
        注意:

        假设我们的环境只能存储得下 32 位的有符号整数，则其数值范围为 [−2^31 = -2147483647 ,  2^31 − 1 = 2147483647]。请根据这个假设，如果反转后整数溢出那么就返回 0。

    */
    /**
        * @param {number} x
        * @return {number}
    */
    var reverse = function (x) {
        if (x === 0) return 0;
        let res = 0
        while (x !== 0) {
            // 从个位起一位一位的颠倒
            console.log(0, res, x)
            res = res * 10 + x % 10; // 每循环一次整个整数向前进一位 + 原来的数的个位数
            console.log(1, res)
            x = parseInt(x / 10);  // 因为上面取了个位数，所以原数位数-1 取整 n除以10， 一位数转化完成 到最后小于1 被转成0 退出循环
        }
        if (res >= 2147483647 || res <= -2147483647) {
            return 0;
        }
        return res;
    };
    var s = "-123"
    console.log(reverse(s))
</script>

</html>